<?php
/**
 * @author Julien Couture, Guillaume Tostain, Théo Portois
 * @version 1.0.0
 * @date 04/11/2014
 * @brief Controlleur d'administration des questions
 * @details Controlleur de la classe joueur comportant toute les fonctions associées à l'administration des questions et pouvant appeler les vues : vAdminQuestions, vAfficheQuestion, vAjoutQuestion, vDomaines, vMondes, vReponseQuestion.
 */
class CManageQuestions extends \BaseController {
	public function index($params="") {
	}
	
	
	/**
	 * @brief Fonction affichant les les questions et leurs réponses
	 * @details Charge la vue vMonde puis attend que l'on selectionne un monde.
	 */
	public function afficheQuestions(){
		$this->loadView("vHeader");
		$this->loadView("vMondes",$this->loadAllMondes());
		echo JsUtils::postFormAndBindTo("#idMonde", "change", "/trivia/CManageQuestions/getDomaines","frmMondes","#domaines");
		echo JsUtils::doSomethingOn("#idMonde", "trigger","'change'");
				
	}
	

	
	
	/**
	 * @brief Renvoie tous les mondes de la BDD
	 * @return Monde Tous les mondes
	 */
	public function loadAllMondes(){
		return DAO::getAll("Monde");
	}
	
	
	
	
	
	/**
	 * @brief Affiche la vue vDomaines
	 * @details Affiche une combobox contenant tous les domaine du monde pré-sélectionner.
	 */
	public function getDomaines(){
		$this->loadView("vDomaines",$this->loadAllDomaines());
		echo JsUtils::postFormAndBindTo("#idDomaine", "change", "/trivia/CManageQuestions/getQuestions","frmDomaines","#questions");
		echo JsUtils::doSomethingOn("#idDomaine", "trigger","'change'");
		
	}
	
	
	/**
	 * @brief Affiche les questions
	 * @details Affiche toutes les questions du domaine séléctionner 
	 */
	public function getQuestions(){
		$this->loadView("vAdminQuestions",array("toutesQuestions"=>$this->loadQuestionsByDomaines(), "reponsesByQuestions"=>$this->loadReponses()));
		echo JsUtils::getAndBindTo(".getReponses", "click", "/trivia/CManageQuestions/getReponses","{}","#reponses");
		echo JsUtils::getAndBindTo(".question", "click", "/trivia/CManageQuestions/validerQuestion","{}","#message");
		echo JsUtils::getAndBindTo(".supprimerQuestion", "click", "/trivia/CManageQuestions/supprimerQuestion","{}", "#message");
		
		
	}
	
	
	
	
	/**
	 * @param string $params La chaine de charactère contenant l'id de la réponse
	 * @brief Affiche les reponses.
	 * @details Affiche les reponses de la question que l'on  a choisis dont l'id est passer en parametre
	 */
	public function getReponses($params){
		$id=str_replace("idReponse", "", $params[0]);
		$this->loadView("vReponses", DAO::getAll("Reponse","idquestion=".$id));
	}
	
	
	
	
	/**
	 * @brief Retourne les mondes
	 * @return Domaine Tous les domaines du monde dont l'id est passé en parametre 
	 */
	public function loadAllDomaines(){
		return DAO::getAll("Domaine","idmonde=".$_POST["idMonde"]);
	}
	
	
	
	
	
	/**
	 * @brief Retourne les questions
	 * @return Question Toutes les questions du domaine dont l'id est passé en parametre 
	 */
	public function loadQuestionsByDomaines(){
		return DAO::getAll("Question","iddomaine=".$_POST["idDomaine"]);
	}
	
	
	
	
	
	
	/**
	 * @brief Retourne les reponses
	 * @return Reponse Toutes les reponses
	 */
	public function loadReponses(){
		return DAO::getAll("Reponse");
	}
	
	
	
	
	
	/**
	 * @param string $params La chaine de charactère contenant l'id de la question
	 * @brief Valide une question
	 * @details Valide la question qui a été préalablement ajouté par un joueur et met à jour la BDD.
	 */
	public function validerQuestion($params){
		$id=str_replace("question", "", $params[0]);
		$question=DAO::getOne("question", $id);
		$question->setValidation(1);
		DAO::update($question);
		echo "La question a été ajouté aux questions valide.";
		$this->afficheQuestions();
	}
	
	
	
	
	/**
	 * @param Question $params La question que l'on veut supprimer
	 * @brief Supprime une question
	 * @details Supprime de la BDD la question que l'on a choisis.
	 */
	public function supprimerQuestion($params){
		$id=str_replace("question", "", $params[0]);
		$question=DAO::getOne("question", $id);
		DAO::delete($question);
		$this->afficheMessage("La question a été supprimer.");
		$this->afficheQuestions();
		echo "La question a été supprimée.";
		
	}
	
	
	
	
}